DC/OS環境をCLIで操作する
はじめに
前回(AWS上にDC/OS環境を構築する)では、DC/OSで用意されたCloudFormationテンプレートを使って、AWS上にDC/OS環境を構築し、Sparkの画面に接続するところまでを行いました。
今回はCLIを使ってDC/OS環境を操作してみたいと思います。
やってみた
DC/OS環境の構築
DC/OS環境の構築は前回の記事を参照してください。
CLIのインストール
手順はDC/OSのドキュメントに従います。事前に要求される環境は以下の通り。
- cURL
- Python 2.7.x or 3.4.x
- Pip
- Git
CLIをインストールする環境は Amazon Linuxで、以下のように上記のソフトウェアが導入済みとなっています。
$ curl -V curl 7.40.0 (x86_64-redhat-linux-gnu) libcurl/7.40.0 NSS/3.21 Basic ECC zlib/1.2.8 libidn/1.18 libssh2/1.4.2 $ python -V Python 2.7.10 $ pip -V pip 8.1.2 from /usr/local/lib/python2.7/site-packages/pip-8.1.2-py2.7.egg (python 2.7) $ git --version git version 2.7.4
まず、pipを使ってvirtualenvをインストールします。
$ sudo pip install virtualenv $ virtualenv --version 15.0.2
作業用ディレクトリ(今回はtmp下に作成)を作り、移動します。
$ cd ~ && mkdir dcos && cd dcos
インストールスクリプトをダウンロードします。
$ curl -O https://downloads.dcos.io/dcos-cli/install.sh
インストールスクリプトを走らせます。この際にDC/OSのDnsAddressを指定します。
$ bash install.sh . http://<DnsAddress>
インストールされたことを確認します。
$ cd ./bin/ $ ./dcos --version dcoscli.version=0.4.6 dcos.version=1.7-open
CLIを使ってみる
CLIの設定の確認
CLIの設定情報を確認します。
$ ./dcos config show core.dcos_url=http://<DnsAddress> core.reporting=True core.ssl_verify=false core.timeout=5
なお、この設定は/home/$USER/.dcos/dcos.tomlに書かれています。
$ cat /home/$USER/.dcos/dcos.toml [core] ssl_verify = "false" dcos_url = "http://<DnsAddress>" timeout = 5 reporting = true
CLIが接続するDC/OSクラスタの変更
core.dcos_urlが、CLIが接続するDC/OSクラスタです。
$ ./dcos config show core.dcos_url http://<DnsAddress>
なので、ここを書き換えれば、CLIが接続するDC/OSクラスタを変更できます。
$ ./dcos config set core.dcos_url http://<別のDnsAddress>
DC/OSクラスタへのログイン
CLIでDC/OSへログインするためには、以下のコマンドを実行します。
$ ./dcos auth login Please go to the following link in your browser: http://<別のDnsAddress>/login?redirect_uri=urn:ietf:wg:oauth:2.0:oob Enter authentication token:
上記の表示されたURLにアクセスすると、ログイン画面が表示されます。好きなログイン方法を選択するとTokenが表示されるので、[Enter authentication token:]に入力すると...
Login successful!
と表示され、CLIからDC/OSへログインできます。
クラスタノードの確認
dcos nodeコマンドで、DC/OSクラスタに含まれるノードの情報を見ることができます。
$ ./dcos node HOSTNAME IP ID 10.0.2.64 10.0.2.64 aaaec8c5-0674-4dca-b9c8-fd70f70d1911-S1 10.0.2.65 10.0.2.65 aaaec8c5-0674-4dca-b9c8-fd70f70d1911-S2 10.0.2.66 10.0.2.66 aaaec8c5-0674-4dca-b9c8-fd70f70d1911-S5 10.0.2.67 10.0.2.67 aaaec8c5-0674-4dca-b9c8-fd70f70d1911-S0 10.0.2.68 10.0.2.68 aaaec8c5-0674-4dca-b9c8-fd70f70d1911-S3 10.0.7.62 10.0.7.62 aaaec8c5-0674-4dca-b9c8-fd70f70d1911-S4
Marathonによるアプリケーションデプロイ
Marathonでアプリケーションをデプロイします。サンプルとしてnginxが提供されているので、これを実行してみます。
$ ./dcos marathon app add https://dcos.io/docs/1.7/usage/nginx.json
アプリケーションの状態を確認します。nginxがちゃんとデプロイされていることがわかります。
$ ./dcos marathon app list ID MEM CPUS TASKS HEALTH DEPLOYMENT CONTAINER CMD /nginx 128 0.0625 1/1 --- --- DOCKER None
Marathonの画面で見たところ。ちゃんとNginxが登録されてますね。
tcos marathon appでは、その他にstart,stop,restart,kill,removeなどが用意されていて、アプリケーションの操作はほぼ全部できるようになっています。
パッケージのインストール
DC/OSにパッケージをインストールします。前回同様にSparkをインストールしてみます。
$ ./dcos package install spark Installing Marathon app for package [spark] version [1.0.0-1.6.1-2] Installing CLI subcommand for package [spark] version [1.0.0-1.6.1-2] New command available: dcos spark DC/OS Spark is being installed! Documentation: https://docs.mesosphere.com/usage/services/spark/ Issues: https://docs.mesosphere.com/support/
インストールされたペッケージを確認します。
$ ./dcos package list NAME VERSION APP COMMAND DESCRIPTION spark 1.0.0-1.6.1-2 /spark spark Spark is a fast and general cluster comput
サービスの確認
dcos serviceコマンドで、インストールしたパッケージの稼働状況がサービスとして登録されていることが確認できます。
$ ./dcos service NAME HOST ACTIVE TASKS CPU MEM DISK ID marathon 10.0.5.28 True 2 1.063 1152.0 64.0 aaaec8c5-0674-4dca-b9c8-fd70f70d1911-0000 spark ip-10-0-2-67.ap-northeast-1.compute.internal True 0 0.0 0.0 0.0 aaaec8c5-0674-4dca-b9c8-fd70f70d1911-0001
GUIで見たところ。
タスクの確認
dcos taskコマンドで、タスク一覧を確認することができます。
$ ./dcos task NAME HOST USER STATE ID nginx 10.0.2.65 root R nginx.3c547bc6-436b-11e6-aa1e-3a0d432635e8 spark 10.0.2.67 root R spark.f09a4647-436c-11e6-aa1e-3a0d432635e8
DC/OSクラスタからのログアウト
作業完了後にはログアウトしておきましょう。
$ ./dcos auth logout
さいごに
DC/OSのCLIを使って操作をしてみました。GUIと同等のことがCLIで出来るのはとても便利ですね!